﻿using System.Collections.Generic;
using CatLib.Container;
using GameFramework.Business;
using GameFramework.Gameplay;
using GameLogic.ShootGame.Controller;
using GameLogic.ShootGame.Model;
using GameLogic.ShootGame.System;
using NotImplementedException = System.NotImplementedException;

namespace GameLogic.ShootGame
{
    /// <summary>
    /// 射击游戏玩法
    /// </summary>
    public sealed class ShootGameGameplay : AGameplay
    {
        public const uint ID = 1;
        
        [Inject]
        public ShootGameStateModel StateModel { get; set; }

        public override bool IsFinish => StateModel.IsFinish.Value;

        protected override void OnAddModels(IGameplayModelContainer container)
        {
            container.Add<ShootGameStateModel>();
        }

        protected override void OnAddSystems(IGameplaySystemContainer container)
        {
            container.Add<ShootGameInitSystem, ShootGameInitSystem>();
            container.Add<IShootGameFireSystem, ShootGameFireSystem>();
        }

        protected override void OnAddViewControllers(IGameplayViewControllerContainer container)
        {
            container.Add<ShootGameInputController>();
        }
    }
}